Notification of application permissions

ABSTRACT

Methods, systems, and computer-readable media for granting application permissions and providing notifications of API activity are provided. An example method may include receiving a first API call by an installed application. The method may further include determining a sensitivity level of the received first API call. The method may further include when the determined sensitivity level of the received first API call is associated with a restricted API classification, determining whether an author of the installed application is an authorized author, and when the author of the installed application is determined to be an authorized author, allowing the received first API call access to its associated API. An example system may include instructions that, when executed by the one or more processors, cause the one or more processors to detect an API call by an application, the API call for accessing data associated with a computing device, determine a sensitivity level of the API call based on the associated data, and provide an indication of the API call based on the determined sensitivity level.

BACKGROUND

Security models for applications typically involve showing a user somekind of a dialog at the time of installation of the application. Theuser may be provided an opportunity to review various access permissionsand accept them. After such user acceptance, the installed applicationgenerally has access to a set of application programming interfaces(APIs) on a going forward basis. Certain APIs, to which the installedapplication has access, may relate to the user's sensitive data orinformation.

SUMMARY

The present disclosure relates generally application permissions anddata security, and more particularly to techniques related to grantingapplication permissions and providing notifications of API activity.

The disclosed subject technology relates to computer-implemented methodsfor granting application permissions during installation, allowing APIcalls based on authorization of an author of an application, andproviding notifications of API activity. It is to be understood thatvarious implementations of the subject technology may include any, all,or none of the following features. An example method may compriseprocessing a request to install an application that requires access toone or more application programming interfaces (APIs) by theapplication. The method may further comprise determining a sensitivitylevel of each of the one or more required APIs. In addition, the methodmay comprise when the determined sensitivity level of at least one APIof the one or more required APIs is associated with a restricted APIclassification, requiring that code of the application be deliveredusing a secure mechanism.

Another example computer-implemented method may comprise receiving afirst application programming interface (API) call by an installedapplication. The method may further comprise determining a sensitivitylevel of the received first API call. The method may further comprisewhen the determined sensitivity level of the received first API call isassociated with a restricted API classification, determining whether anauthor of the installed application is an authorized author. Inaddition, the method may comprise when the author of the installedapplication is determined to be an authorized author, allowing thereceived first API call access to its associated API.

Another example computer-implemented method may comprise processing arequest to install an application that requires one or more applicationprogramming interface (API) calls by the application. The method mayfurther comprise determining an authoring entity of the application. Themethod may further comprise determining whether the authoring entity iscertified by one or more trusted entities. In addition, the method maycomprise allowing an installation of the application when the authoringentity is certified by at least one trusted entity of the one or moretrusted entities.

Another example computer-implemented method may comprise detecting anAPI call by an application, the API call for accessing data associatedwith a computing device. The method may further comprise determining asensitivity level of the API call based on the associated data. Inaddition, the method may comprise providing an indication of the APIcall based on the determined sensitivity level.

The disclosed subject matter further relates to systems for grantingapplication permissions during installation, allowing API calls based onauthorization of an author of an application, and providingnotifications of API activity. An example system may comprise one ormore processors, and a memory including instructions that, when executedby the one or more processors, cause the one or more processors toperform operations. The one or more processors of the system may beconfigured to process a request to install an application that requiresaccess to one or more application programming interfaces (APIs) by theapplication. The one or more processors of the system may be furtherconfigured to determine a sensitivity level of each of the one or morerequired APIs. In addition, the one or more processors of the system maybe configured to when the determined sensitivity level of at least oneAPI of the one or more required APIs is associated with a restricted APIclassification, require that code of the application be delivered usinga secure mechanism.

Another example system may comprise one or more processors configured toreceive a first application programming interface (API) call by aninstalled application. The one or more processors of the system may befurther configured to determine a sensitivity level of the receivedfirst API call. The one or more processors of the system may be furtherconfigured to when the determined sensitivity level of the receivedfirst API call is associated with a restricted API classification,determine whether an author of the installed application is anauthorized author. In addition, the one or more processors of the systemmay be configured to when the author of the installed application isdetermined to be an authorized author, allowing the received first APIcall access to its associated API.

Another example system may comprise one or more processors configured toprocess a request to install an application that requires one or moreapplication programming interface (API) calls by the application. Theone or more processors of the system may be further configured todetermine an authoring entity of the application. The one or moreprocessors of the system may be further configured to determine whetherthe authoring entity is certified by one or more trusted entities. Inaddition, the one or more processors of the system may be configured toallow an installation of the application when the authoring entity iscertified by at least one trusted entity of the one or more trustedentities.

Another example system may comprise one or more processors configured todetect an API call by an application, the API call for accessing dataassociated with a computing device. The one or more processors of thesystem may be further configured to determine a sensitivity level of theAPI call based on the associated data. In addition, the one or moreprocessors of the system may be configured to provide an indication ofthe API call based on the determined sensitivity level.

The disclosed subject matter also relates to example machine-readablemedia comprising instructions stored therein, which when executed by asystem, cause the system to perform operations for granting applicationpermissions during installation, allowing API calls based onauthorization of an author of an application, and providingnotifications of API activity. An example machine-readable medium maycomprise instructions for processing a request to install an applicationthat requires access to one or more application programming interfaces(APIs) by the application. The machine-readable medium may furthercomprise instructions for determining a sensitivity level of each of theone or more required APIs. In addition, the machine-readable medium maycomprise instructions for requiring, when the determined sensitivitylevel of at least one API of the one or more required APIs is associatedwith a restricted API classification, that code of the application bedelivered using a secure mechanism.

Another example machine-readable medium may comprise instructions forreceiving a first application programming interface (API) call by aninstalled application. The machine-readable medium may compriseinstructions for determining a sensitivity level of the received firstAPI call. The machine-readable medium may comprise instructions fordetermining, when the determined sensitivity level of the received firstAPI call is associated with a restricted API classification, whether anauthor of the installed application is an authorized author. Inaddition, The machine-readable medium may comprise instructions forallowing, when the author of the installed application is determined tobe an authorized author, the received first API call access to itsassociated API.

Another example machine-readable medium may comprise instructions forprocessing a request to install an application that requires one or moreapplication programming interface (API) calls by the application. Themachine-readable medium may comprise instructions for determining anauthoring entity of the application. The machine-readable medium maycomprise instructions for determining whether the authoring entity iscertified by one or more trusted entities. In addition, Themachine-readable medium may comprise instructions for allowing aninstallation of the application when the authoring entity is certifiedby at least one trusted entity of the one or more trusted entities.

Another example machine-readable medium may comprise instructions fordetecting an API call by an application, the API call for accessing dataassociated with a computing device. The machine-readable medium maycomprise instructions for determining a sensitivity level of the APIcall based on the associated data. In addition, The machine-readablemedium may comprise instructions for providing an indication of the APIcall based on the determined sensitivity level.

It is understood that other configurations of the subject technologywill become readily apparent from the following detailed description,where various configurations of the subject technology are shown anddescribed by way of illustration. As will be realized, the subjecttechnology is capable of other and different configurations and itsseveral details are capable of modification in various other respects,all without departing from the scope of the subject technology.Accordingly, the drawings and detailed description are to be regarded asillustrative in nature and not as restrictive.

BRIEF DESCRIPTION OF THE DRAWINGS

Certain features of the subject technology are set forth in the appendedclaims. However, for purpose of explanation, several implementations ofthe subject technology are set forth in the following figures.

FIG. 1 illustrates an example client-server network environment whichprovides for application permissions in accordance with various aspectsof the subject technology.

FIG. 2 illustrates examples of authorship trust techniques for grantingapplication permissions in accordance with various aspects of thesubject technology.

FIGS. 3A and 3B illustrate examples of API usage notification techniquesin accordance with various aspects of the subject technology.

FIG. 4 illustrates an example of a process for installing an applicationthat requires one or more APIs in accordance with various aspects of thesubject technology.

FIG. 5 illustrates an example of a process for restricting API calls byan installed application in accordance with various aspects of thesubject technology.

FIG. 6 illustrates an example of a process related to a request toinstall an application that requires one or more API calls in accordancewith various aspects of the subject technology.

FIG. 7 conceptually illustrates an electronic system with which someaspects of the subject technology are implemented.

DETAILED DESCRIPTION

The detailed description set forth below is intended as a description ofvarious configurations of the subject technology and is not intended torepresent the only configurations in which the subject technology may bepracticed. The appended drawings are incorporated herein and constitutea part of the detailed description. The detailed description includesspecific details for the purpose of providing a thorough understandingof the subject technology. However, it will be clear and apparent thatthe subject technology is not limited to the specific details set forthherein and may be practiced without these specific details. In someinstances, structures and components are shown in block diagram form inorder to avoid obscuring the concepts of the subject technology.

In accordance with various aspects of the subject technology, thepresent disclosure describes techniques for managing applicationpermissions and indicating API call activity. For example, many usershave relatively low awareness regarding the application permissions towhich they are agreeing at the time of downloading and installing anapplication. Users likewise have little visibility to these applicationpermissions and any problems that may be caused by the installedapplication, particularly when a large number of applications aredownloaded to a device, for example.

Accordingly, in certain examples, techniques for granting and managingapplication permissions for an application at installation and duringuse of the application are described herein. These techniques may beused individually to improve security to a user's information andawareness of what information is being access and by whom. However, thetechniques may be used in combination to provide an applicationspermissions management scheme and information access visibility.

In some examples, a mobile device may receive a request to install (orsend a request to download) an application that requires access to oneor more APIs. The sensitivity level of the API associated with theapplication may be determined, and when the sensitivity level of the APIcall is determined to be of a sensitive or restricted nature, the mobiledevice may require that the code of the application be delivered using asecure mechanism that identifies the author.

For example, delivery using secure sockets layer (SSL) protocol and SSLcertificate may be required. SSL protocol technology may be used as thesecure mechanism to enable two systems to communicate via encrypteddata. The receiving system has the ability to certify that the receiveddata was indeed transmitted from the source that is claiming to deliverit.

In other examples, for instance, when an application has previously beeninstalled on the mobile device, the mobile device may receive an APIcall from the application. The mobile device may then determine whetherthe received API call is a sensitive or restricted API call. If it isdetermined that the received API call is a sensitive or restricted APIcall, then the received API call may only be allowed if the author ofthe installed application is an authorized author.

Whether the author of the installed application is an authorized authormay be determined by determining whether a certificate associated withdelivery of code during the installation of the application is owned bya trusted entity or has been validated by a trusted entity. A trustedentity may be a corporate entity or an individual user in accordancewith various examples and implementations.

A trusted entity approach to granting application permissions may befurther employed, for example, when a device processes a request toinstall an application that requires one or more API calls. For example,a user of the device may wish to initiate a download of an applicationfrom a remote server, but may not be knowledgeable of who the author ofthe application is or the author's credentials, for example.Accordingly, an authoring entity of the application may be determined,and if the authoring entity is certified by one or more trustedentities, the device may allow the download and installation of theapplication requires one or more API calls.

In this regard, rather than having approval of API permissions be madeon an application by application basis, a user of a device in accordancewith the subject technology can indicate trust of a trusted entity.Accordingly, each of a plurality of trusted entities can serve toidentify a plurality of authors that are permitted provide applicationsto users.

In other examples, techniques for providing indications and detailednotifications to a user of a device regarding API calls being invokedmay be provided. For example, a device may provide a user with areal-time indication that an API call or other information accessrequest is taking place. In an example, a user of the device may berunning an application, for instance, a racing game, when a sensitive orrestricted API call that is not expected by the user is triggered by theapplication. For example, the racing game application may invoke an APIcall associated with the access of the user's financial data stored onthe device.

In response to the sensitive or restricted API call, the device mayprovide an indication that the sensitive or restricted API call has justoccurred. For example, the device may activate an API access indicatorlight position somewhere on the phone housing or an API access indicatoricon positioned on a display screen of the device. For example, theindicator light and/or indicator icon may illuminate, flash, blink, orpulse different colors (e.g., red, yellow, or green) for differentdurations based on the level of sensitivity associated with the APIcall.

In yet other examples, an API access log can be provided as anotification log viewable on the display screen of the device. The APIaccess log may be dedicated to providing only API access notificationsin some implementations. For example, the API access log can includeentries providing information such as application name, level ofsensitivity, details, time, etc., related to API access events that haveoccurred on the device. In some implementations, the API access log canbe launched from an API access indicator icon positioned on a displayscreen of the device.

To this end, real-time indication of API access may be communicatedalong with notification details regarding the level of sensitivity ofthe detected API call such that a user of a device in accordance withthe subject technology can readily correlate a sensitive or restrictedAPI to an application being currently executed by the device.

Systems and techniques for granting application permissions andproviding notifications of API activity in accordance with variousaspects of the subject technology are described in further detail below.

FIG. 1 illustrates an example client-server network environment whichmay support application permissions and be used to implement varioustechniques for granting or denying permissions. Network environment 100may include a number of electronic devices 102, 103, 104, 106communicably connected to one or more servers 110, such as by network108. In other examples, electronic devices 102, 103, 104, 106 may becommunicably connected to one another, such as by network 108, but notcommunicably connected to one or more servers 110.

In the example of FIG. 1, one or more server 110 may host one or moresystems or services including but not limited to systems for downloadingand installing based on application permissions techniques. In certainexamples, each of one or more servers 110 may be a single computingdevice such as a computer server. In other examples, one or more servers110 may represent more than one computing device working together toperform the actions of a server computer (e.g., a cloud of computers ora distributed system). In another example, each of one or more servers110 may be coupled with various databases, storage services, or othercomputing devices. Each of one or more servers 110 and the coupleddatabases, storage services, or other computing devices may becollocated, or may be disparately located.

For example, each of one or more servers 110 may include one or moreprocessing devices 112 and one or more data stores 114. One or moreprocessing devices 112 may execute instructions stored in one or moredata stores 114. One or more data stores 114 may store the computerinstructions on non-transitory computer-readable medium.

Network 108 may be a public communication network, a privatecommunications network, or a combination of both. In certain examples,network 108 can include any one or more of a personal area network(PAN), a local area network (LAN), a campus area network (CAN), ametropolitan area network (MAN), a wide area network (WAN), a broadbandnetwork (BBN), the Internet, and the like. Further, network 108 caninclude, but is not limited to, any one or more of the following networktopologies, including a bus network, a star network, a ring network, amesh network, a star-bus network, tree or hierarchical network, and thelike.

Network 108 may be a public communication network (including, but notlimited to, the Internet, cellular data network, cable data network, ordialup modems over a public switched telephone network) or a privatecommunications network (such as, for example, private local area network(“LAN”) or leased-line network). Network 108 may also include, but isnot limited to, any one or more of the following network topologies,including a bus network, a star network, a ring network, a mesh network,a star-bus network, a tree or hierarchical network, and the like.

In some implementations, electronic devices 102, 103, 104 and 106 can becomputing devices such as laptop or desktop computers, smartphones,personal digital assistants (“PDAs”), portable media players, tabletcomputers, televisions or other displays with one or more processorscoupled thereto or embedded therein, or other appropriate computingdevices. In the example of FIG. 1, electronic device 102 is depicted asa desktop computer, electronic devices 103, 104 are depicted assmartphones, and electronic device 106 is depicted as a tablet device.

Communications between electronic devices 102, 103, 104, 106, and server110 may be facilitated utilizing various file sharing techniques anddata transmission protocols such as, but not limited to, HypertextTransfer Protocol (HTTP), Extensible Messaging and Presence Protocol(XMPP), File Transfer Protocol (FTP), Secure Shell (SSH), Server MessageBlock (SMB), etc., for some or all communications between electronicdevices 102, 103, 104, 106 and server 110. In other examples, electronicdevices 102, 103, 104, 106 may be in communication with one anotherwithout communicating with server 110.

In the example of FIG. 1, each electronic device 102, 103, 104, 106 maydownload applications from server 110 or another of electronic devices102, 103, 104, 106, in response to a request to install an application.The request to install an application may be received from anotherdevice on network 108 (or connected thereto), or may be initiated by theelectronic device 102, 103, 104, 106, on which the application will beinstalled.

In operation, server 110 may provide and process operations for hostinga website that may deliver an application to electronic devices 102,103, 104, 106. Electronic devices 102, 103, 104, 106 may each establisha communications with server 110, for purposes of downloadingapplications from the hosted website.

Given than an application is installed on electronic device 104, forexample, and the application requests to make a sensitive or restrictedAPI call (e.g., the application requests to obtain the user's location),a permissions system of electronic device 104 requires a way todetermine whether the application is allowed to obtain the user'slocation. To determine whether the application is allowed to access suchsensitive or restricted information, the permissions system bases theallowance (or denial) of the sensitive API call on authorshipattribution, for example, an author or authoring entity of theapplication.

In accordance with various aspects, an author or authoring entity of anapplication can be the individual or entity that developed theapplication or distributes the application. In some instances, theauthor or authoring entity may be both the developer and distributer ofthe application. In other instances, the author or authoring entity ofthe application may be an entity that provides for or facilitates thedistribution of the application.

In certain examples, authorship attribution is based on whether theauthor of the application has an SSL certificate that has been used todeliver the binary code of the application to electronic device 104. Forexample, SSL protocol technology may be used to enable two systems tocommunicate via encrypted data. The receiving system (e.g., thepermissions system of electronic device 104) has the ability to certifythat the received data was indeed transmitted from the source that isclaiming to deliver it.

Similar techniques may be utilized, for example, when a user's deviceattempts to retrieve web email from a remote server. If the user'sdevice is connected to an non-Internet connected network (e.g., awireless network at a hotel that block Internet access), the web browserof the user's device may provide an indication that the website to whichthe user is trying to connect does not look like the websiteacknowledging the communications (e.g., the user's traffic is beingintercepted by the hotel server because the user has not yet paid forwireless access).

In accordance with certain aspects, such security mechanism and similarvariations and implementations (e.g., verifying an SSL certificate) canbe used to validate that the application code being executed byelectronic device 104 came from the server identified as the source ofthe application code. If the delivered code is not properly signed bythe certificate and if the certificate itself is not trusted (e.g., thecertificate has not been validated by some other third party that istrusted by the user), then the application will not be allowed make thesensitive or restricted API call. In this regard, if the user indicatesthat he or she trusts source code received from a source (e.g., a webservice provider or service provider), the permissions system ofelectronic device 104 will allow the application to access the sensitiveor restricted APIs based on the identity of the authorized entity thatdelivered the code.

As a result, as soon as electronic device 104 receives the codeassociated with an application, the permissions system of electronicdevice 104 can immediately allow that installed application to accesssensitive or restricted APIs without having to go through an additionalstep of the user validating that he or she trusts that particularapplication. A user of electronic device 104 can therefore trust sourcesof applications and need not trust each individual application.

Various techniques for tiered application permissions are furtherdescribed below with respect to FIGS. 2-6 and continued reference toFIG. 1.

FIG. 2 illustrates examples of trust techniques for grantingpermissions. Applications 262 a-c, 264 a-c, and 266 may be available forinstallation on mobile device 204. Each of applications 262 a-c, 264a-c, and 266 are authored by a different authoring entity in someexamples. Mobile device 204 is operable to trust various entities (e.g.,a trusted entity) such that applications by authoring entities that aretrusted or certified by a trusted entity may be download directly to themobile device 204 without any user interface interrogatory or additionalpermissions request by a server (e.g., server 110).

For example, mobile device 204 may include trusted web service provider252 as a trusted entity and as a trusted connection 212 for facilitatingaccess to and/or downloading applications. However, mobile device 204has not included service provider 254 as a trusted entity and has anuntrusted connection 214 with respect to service provider 254.

It is understood that service provider 254 may be a trusted provided toother devices and could be a trusted entity of mobile device 204 shouldmobile device 204 elect to include service provider 254 as trusted atsome point, for example.

Additionally, each authoring entity that authored applications 262 a-c,264 a-c, 266 could be selected and designated as a trusted entity bymobile device 204. However, mobile device has not designated anyauthoring entity that authored applications 262 a-c, 264 a-c, 266 assuch in the following examples. Trusted web service provider 252,however, expressly trusts and has certified each of the authoringentities of applications 262 a-c. For example, mobile device 204 mayprocess a request to install application 262 a that requires access toone or more API calls. Mobile device 204 determines the authoring entityof application 262 a, and that the authoring entity of application 262 ais certified by trusted web service provider 252. Thus, mobile device204 allows application to be downloaded (e.g., over network 108) andinstalled without any permissions dialog directed to a user of themobile device 204 regardless of whether application 262 a requires APIcalls to sensitive or restricted APIs.

Moreover, mobile device 204 may similarly process a request to installapplication 262 b and automatically install application 262 b becauseapplication 262 b is likewise trusted and certified by trusted webservice provider 252. If, however, trusted web service provider 252revokes its trust and certification of 262 b, and if application 262 bhas already been installed by mobile device 204, then any API call byapplication 262 b will likewise be revoked by the mobile device 204. Forexample, trusted web service provider 252 may send a notification todevices for which it has a trusted connection 212 and/or revoke an SSLcertificate issued to the authoring entity of application 262 b.

In the example of FIG. 2, service provider 254 expressly trusts and hascertified each of the authoring entities of applications 264 a-c.However, any trust and certification of authoring entities by serviceprovider 254 is of no consequence to mobile device 204 with respect toautomatically downloading and installing an application on mobile device204. However, the trust and certification of the authoring entities ofapplications 264 a-c may have some relevancy in certain instances anddescribed below.

For example, mobile device 204 may process a request to installapplication 264 c that requires access to one or more API calls. Mobiledevice 204 determines the authoring entity of application 264 c, andthat the authoring entity of application 264 c is not trusted orcertified by any trusted entity of the mobile device 204. Thus, mobiledevice 204 denies the installation of application 264 c that requiresone or more API calls, at least initially with regard to trustedautomatic download as installation techniques.

However, in some examples, mobile device 204 may receive a request toinstall application 264 c (e.g., a map and driving directions program)that identifies the one or more API calls of application 264 c and thatidentifies multiple entities that certify the authoring entity ofapplication 264 c. Thus, device 204 may provide a dialog in a userinterface indicating that the one or more API calls of applicationrelate to location information of the mobile device 204 and that serviceprovider 254 (e.g., a well-known service provider) and fifteen otherentities (e.g., several of which are deemed highly trustworthy) havecertified the authoring entity of application 264 c. If a user of device204 is agreeable to allow such permissions based on the informationprovided in the dialog, an acknowledgement confirming the receivedrequest may be processed and application 264 c can be installed on themobile device 204.

In another example, mobile device 204 may receive a request to installapplication 266 (e.g., a flashlight program that uses a mobile phone'sexisting camera flash) that identifies the one or more API calls ofapplication 266 and that identifies several entities that certify theauthoring entity of application 266. Thus, device 204 may provide adialog in a user interface indicating that the one or more API calls ofapplication relate to access of email and browser history data stored onthe mobile device 204 and that three entities (e.g., none of which areknown to a user of the mobile device 204) have certified the authoringentity of application 264 c. Thus, the user of device 204 may not beagreeable to allow such permissions and deny the received request.

FIG. 3A is an example of a mobile device 304 employing API usagenotification techniques. In certain examples, mobile device 304 mayprovide the user with a real-time indication that an API call or otherinformation access request is taking place. The API call can beassociated with an API and accessed data on the mobile device 304 orwith an API on the mobile device 304 and remotely accessed data, forexample. A user of the mobile device 304 may be running an application335 (e.g., playing a racing game). In some examples, access permissionsfor the application 335 may have been previously granted andacknowledged in some manner by the user. Certain API calls may beexpected during the execution of the application, for example, access toa hard drive to retrieve code associated with the continued execution ofthe application.

However, a sensitive or restricted API call that is not expected may betriggered by application 335 while the application 335 is running on themobile device 304. For example, application 335 may invoke an API callassociated with the access of financial data on the mobile device 304.In response to the sensitive or restricted API call, mobile device 304may provide an indication that the sensitive or restricted API call hasjust occurred.

For example, the indication that an API call has been invoked can beprovided by a hardwired indicator light 322 (e.g., an LED, lamp, or thelike) on mobile device 304. In this regard, such a hardwired indicatorimplementation may be virtually impervious to circumvention or tamperingattempts by a malicious software application. For example, a malicioussoftware application would not be able to cover or overlay an image on adisplay screen indication of an sensitive or restricted API call.Alternatively, or in addition, an indication that an API call is beinginvoked may be provided by an indicator icon 324 on a portion of thedisplay screen of the mobile device 304. Controls and modules related toboth indicator light implementation may be included in the device asseparate operating system subsystems to further minimize attempts bymalicious software applications to circumvent sensitive or restrictedAPI notification techniques.

To alert a user, indicator light 322 and/or indicator icon 324 mayilluminate, flash, blink, pulse or the like in various color anddurations according to how sensitive the API being accessed is. Forexample, local storage access related to an application for whichapplication data and code are isolated (e.g., sandboxed), could be shownas a green indicator. However, a more sensitive assess, for example,sharing cookies or other user-related information between applicationscould be shown as yellow indicator (e.g., certain advertisement systemsmay perform such task in order to show a user advertisement targetedbased on a user's browsing history rather than current context). Theindicator light 322 and/or indicator icon 324 could be shown as a redindicator for highly sensitive or restricted access, for example, highlypersonal information such as, but not limited to, a user's contact list,location, documents, and email.

Similarly, the duration of the indication provided by of the indicatorlight 322 and/or indicator icon 324 may differ for various sensitivitylevels associated with API calls being invoked. For example, a greenindicator may be a short blink or pulse, a yellow indicator could beslightly longer blink or pulse (e.g., 500 millisecond), and a redindicator could be long flash (e.g., 1 second) so as to encourage theuser of the mobile device 304 to notice when highly sensitive orrestricted API calls are being invoked.

It is to be understood, however, that other techniques may be used tovisually communicate to a user of the mobile device 304 that a sensitiveor restricted API call has been invoked. Moreover, in someimplementations, the indication that an API call has been invoked mayinclude a sound (e.g., a chirp, beep, or alarm) or vibration of themobile device 304. For example, different sounds and durations of thesounds may be utilized depending on the sensitivity of the API call. Insome examples, the sounds used for indicating that an API call has beeninvoked can be unique sounds that are not selectable for use in othersystem settings of the mobile device 304.

In accordance with certain aspects, an entry related to an API callinvoked may be provided to an API access log or similar informationaccess log. In some examples, the API access log can be accessed by asuser of the mobile device 304 by tapping on the indicator icon 324. Inthis regard, the user of the mobile device 304 can be alerted inreal-time to the potential threat, investigate the details associatedwith the sensitive or restricted API access, and take any correctivemeasures, if necessary.

FIG. 3B illustrates an example of an API access log 350. API access log350 can be a notification log viewable on the display screen of themobile device 304 that provides only API access notifications. Forexample, API access log 350 can include a notification header bar 352that indicates columns for application name, level of sensitivity,details, time, etc., related to API access events. API access logentries 355 a-g identify the particulars of the API access events andmay be sorted in various manners, for example, based on time ofoccurrence.

A user of mobile device 304 may inspect the API access log 350, forexample, when alerted to an unusual or unexpected API indication byindicator light 322 and/or indicator icon 324. However, the user mayreview the API access log entries 355 a-g at a time more convenient forthe user. It is important to note that a high level (e.g., red indictor)API access log entry does not necessarily indicate that any improper APIaccess occurred. Rather, the API notification techniques in accordancewith certain aspects may simply alert and inform the user that aspecific API call or event is occurring. For example, API access logentry 355 d for an API call related to personal information associatedwith a finance application and API access log entry 355 g for an APIcall related to location information associated with a map applicationmay be entirely expected by the user.

Some low or medium access level API calls, for example, API access logentries 355 b, 355 e, 355 f may be expected by the user. However, otherhigh and medium access level API calls may be cause for concern. Forexample, as discussed above with respect to the example of access whileplaying a racing game, a user would likely inquire into the details ofAPI access log entry 355 a for an API call related to personal financialinformation associated with a racing game application.

Additionally, a user may be alerted by indicator light 322 and/orindicator icon 324 and inquire into the details of API access log entry355 c for an API call related to installing a new icon on the user'shome screen associated with an operating system library application. Forexample, certain operating system libraries may install new icons on theuser's home screen in order to drive installs of applications that theuser hasn't discovered yet. The user may not understand why or how thenew application icon for downloading appears on the home screen, orwhich application or applications are responsibly for such installationactivity. The user of mobile device 304 could access the API access log350 and review the details of API access log entry 355 c. The user couldthen make a decision whether the API call and resulting event wereacceptable to the user or remove the application making the API call orremove the application's permission to invoke that specific API call, ifpossible.

Accordingly, real-time indication of API access and related informationaccess may be communicated along with a degree of sensitivity of thedetected API access and specific details such that a user of the mobiledevice 304 can readily correlate sensitive or restricted API calls to anapplication being currently executed by the mobile device 304. Moreover,in some implementations, the access levels or classifications associatedwith the sensitive or restricted API calls are fixed whereby a usercannot modify the sensitivity level given to a particular API or APIcall. In this regard, a malicious software application cannot attempt tochange a high-level access (e.g., red indicator) to a low-level access(e.g., green indicator) classification via settings parameters of userconfiguration source code, for example.

An example API usage notification process related to the API usagenotification techniques described above is further provided. The exampleAPI usage notification process may be used in conjunction with otherprocesses and aspects of the present disclosure. Although aspects aredescribed with relation to the examples provided in FIGS. 1-3B, the APIusage notification process is not limited to such.

For example, an API call by an application may be detected by acomputing device (e.g., electronic device 104, mobile device 204, ormobile device 304). The detected API call may be related to accessingdata associated with the computing device. A sensitivity level of theAPI call may be determined based on the associated data. The sensitivitylevel of the API call may be determined as high, medium, or low. Anindication of the API call based on the determined sensitivity level maybe provided by the API usage notification process.

In some examples, the API usage notification process a hardwiredindicator (e.g., indicator light 322) on the computing device and/or anindicator icon (e.g., indicator icon 324) on a display screen of thecomputing device may be activated to provide an indication of the APIcall. In some examples, the indicator icon can be launched such that anAPI access log comprising one or more API access entries associated withone or more corresponding API calls is provided, for instance, on thedisplay screen of the computing device.

FIG. 4 illustrates a flow diagram of an example process related to theinstallation of an application containing one or more API calls. It isto be understood that the operations in process 400 may be used inconjunction with other processes and aspects of the present disclosure.Although aspects of process 400 are described with relation to theexamples provided in FIGS. 1-3B, process 400 is not limited to such.

In block 402, a request (e.g., by electronic device 104, a websitehosted by server 110, or another electronic device 102, 103, 105 havingconnectivity to electronic device 104) may be processed to install anapplication that requires access to one or more APIs. It is to beunderstood that the application may include any executable program codesuch as, but not limited to, code written with various general purposeor interpreted programming languages (e.g., Java, C++, JavaScript,Visual Basic, etc.).

In block 404, the sensitivity level of the one or more APIs may bedetermined. For example, a device (e.g., electronic device 104, mobiledevice 204, or mobile device 304) may determine the sensitivity level ofeach of the one or more APIs for which access is required by theapplication to be installed. It may be determined that all of the APIsrequired by the application requesting to be installed on the device maybe associated with harmless APIs, some of the required APIs may beassociated with harmless APIs and some may be associated with restrictedAPIs, or all of the required APIs may be associated with restrictedAPIs. In some examples, restricted (or sensitive) API classificationsmay include APIs that share a user's contact list, the user's location,the user's email, the user's cookies, and/or the user's documents orfiles stored on the device or accessible by the device.

Other examples involving restricted (or sensitive) API classificationsmay include APIs associated with control of a user's entire screen ofthe device (e.g., full screen mode), accessing a microphone on thedevice, accessing a speaker on the device, accessing a camera on thedevice, acquiring information as to whether or not a face can bedetected by either a forward facing or rearward facing camera on thedevice, acquiring an IP address assigned to the device, acquiring theuser's email address, acquiring the user's avatar (e.g., a photograph orlikeness of the user), acquiring the user's browsing or web searchhistory, acquiring a configuration of the user's home screen on thedevice (e.g., information pertaining to what icons exist and where theicons are positioned on the home screen), acquiring a list ofapplications that the user has installed on the device, acquiring usagefrequency and history of applications that the user has installed on thedevice, acquiring an amount of battery life remaining on the device,acquiring information regarding detectable Bluetooth beacons of otheruser devices or WiFi beacons in the vicinity of the user's device (e.g.,information as a proxy for the user's present location), acquiringinformation regarding a presence or absence of light around the device,acquiring a temperature of the device (e.g., information which mayindicate a placement of the device on the user's person), acquiring aspeed at which the device is moving, acquiring an orientation of thedevice, acquiring a status of whether the device is currently being usedfor a telephone call, acquiring a call history of the device, acquiringa ringtone of the device, and acquiring information regarding how longthe device has been in an idle state as measured by at least one ofactivation of the display, user input to the device, or movement of thedevice.

It is to be appreciated that personally identifying information maypotentially be determined by an application having permissions to APIsassociated with various sensors on the device, particularly when suchacquired sensor information is taken in combination with otherinformation regarding the user of the device.

In block 406, when the determined sensitivity level of at least one APIof the one or more required APIs is associated with a restricted APIclassification, requiring that code of the application containing theone or more API calls to be delivered by the website using a securemechanism. In some implementations, secure sockets layer (SSL) protocolmay be included in the secure mechanism related to the delivery of thecode. Other secure transfer techniques for delivering code arecontemplated for use in various implementations.

In block 408, the application that requires the one or more API callsmay be installed on the device (e.g., by downloaded from server 110hosting the website). In some implementations, the manner in which theapplication is installed on the device can be based on the determinedsensitivity level of each of the one or more required APIs. For example,the code of the application containing the one or more APIs may bedelivered using a secured mechanism as may be required when thedetermined sensitivity level of at least one API of the one or morerequired APIs is associated with a restricted API classification.However, in some examples, the code of the application containing theone or more required APIs may be delivered in an unsecured manner whenall of the required APIs contained in the application are classified aslow or harmless.

Referring to FIG. 5, an example process 500 for determining whether toallow an API call is illustrated. It is to be understood that theoperations in process 500 may be used in conjunction with otherprocesses and aspects of the present disclosure. Although aspects ofprocess 500 are described with relation to examples provided in of FIGS.1-3B, process 500 is not limited to such.

In block 502, a device (e.g., electronic device 104, mobile device 204,or mobile device 304) may receive a first API call by an installedapplication. For example, an API calling module (e.g., an applicationprogram or a device driver) may make the first API call using an API,which may specify one or more functions, data structures, protocols,formats and/or features of an API implementing module (e.g., anoperating system or an application program) residing on the device.

In certain examples, the application making the first API call may havebeen installed using the operations described in process 400. However,the application may have been installed on the device by other manners(e.g., installed by flash drive, CD-ROM, etc., or installed byactivating a resident code on electronic device 104 such as apreinstalled application) or installed without process 400. In any suchscenario, the device may process the received first API call by theinstalled application.

In decision block 504, a sensitivity level of the received first APIcall may be determined by the device. For example, a permissions systemof the device may determine that the first API call shares the locationof the device with a remote application (e.g., an application acrossnetwork 108 residing on server 110). In some implementations, sharingthe location of the device is deemed to be a restricted APIclassification.

In block 506, when the determined sensitivity level of an API call isnot associated with a restricted API classification, the permissionssystem of device may allow the API call. As such, in certainimplementations, the permissions system of the device may allow anyharmless API call regardless of whether an author of the installedapplication is determined to be an authorized author. In otherimplementations, however, permissions system of the device may determinewhether an author of the installed application is determined to be anauthorized author even when the determined sensitivity level of an APIcall is not associated with the restricted API classification (e.g.,requiring that an author be an authorized user for all installedapplications that require access to one or more APIs).

When the determined sensitivity level of the received first API call isassociated with the restricted API classification, the permissionssystem of the device may determine whether an author of the installedapplication is determined to be an authorized author (decision block508). For example, whether the author of the installed application isdetermined to be an authorized author may be determined by determiningwhether a certificate associated with a delivery of code during theinstallation of the application is owned by a trusted entity or has beenvalidated by a trusted entity. A trusted entity may be a corporateentity (e.g., a web search provider, a software developer, etc.associated with server 110) or an individual user (e.g., a userassociated with electronic devices 102, 103) in various examples andimplementations of process 500. The concept of trusted entities andapplication permissions is described in detail above with respect toFIG. 2.

In some implementations, the certificate associated with the delivery ofcode may be a secure sockets layer (SSL) certificate. For example,authorizing an author of an application can be based on having an SSLcertificate that was used to deliver binary code to the device duringthe process of installing the application. It is to be appreciated thatan advantage of utilizing SSL techniques is that such techniques are notseen to impose constraints on websites delivering applications in such amanner as SSL protocol and related delivery mechanisms may be used insome situations involving brokerage transactions, for example.

When the author of the installed application is determined to be anauthorized author, the received first API call that has been determinedto be associated with a restricted API may be allowed (block 506) by thepermissions system of the device. However, when the author of theapplication is not determined to be an authorized author, the receivedfirst API call may be disallowed or denied access to its associated API(block 510).

In block 512, a second API call by the installed application may bereceived. Accordingly, when the author of the installed application isdetermined to be an authorized author, the received second API call maybe allowed access to its associated API (block 514). Similarly, once thepermissions system of the device has determined that the author of theapplication is an authorized author, any subsequent API call by thatapplication may be automatically allowed by the permissions system.

FIG. 6 is a flow diagram illustrating an example process 600 fordetermining whether to allow an application that requires one or moreAPI calls to be installed on a device based on certification of theauthor of the application by one or more trusted entities. It is to beunderstood that the operations in process 600 may be used in conjunctionwith other processes and aspects of the present disclosure. Althoughprocess 600 is described with relation to system of FIG. 1-3B, process600 is not limited to such.

In block 602, a device (e.g., electronic device 104, mobile device 204,or mobile device 304) may process a request to install an applicationthat requires one or more API calls by the application to be installed.For example, a user of the device may wish to initiate a download of anapplication (e.g., application 262 a) from a remote server. However, theuser may not be knowledgeable of who the author of the application is orthe author's credentials, for example.

Accordingly, an authoring entity of the application may be determined(block 604). For example, the device may determine an authoring entityof the application by receiving an indication from the remote server.The device may also determine an authoring entity of the application byreceiving an indication from a trusted entity (e.g., trusted web searchprovider entity 252).

In block 606, the device may determine whether the authoring entity iscertified by one or more trusted entities (e.g., trusted web searchprovider 252). In certain implementations, the one or more trustedentities are deemed trusted by the user of the device. For example, thedevice may include a list of trusted entities including, but not limitedto, web search providers, service providers, software developers, andother entities that may facilitate the distribution of applications.

In some examples, the determination whether the authoring entity isdetermined to be certified by one or more trusted entities may be basedon a security certificate received by the one or more trusted entitiesassociated with the delivery of the code of the application by theauthoring entity. In some implementations, the security certificate is asecure sockets layer (SSL) certificate. However, other techniques forproviding security certificates or the like are contemplated.

Moreover, the trust provided by the one or more trusted entities inexample certification processes may be time barred in accordance withcertain aspects. For example, determining whether the authoring entityis certified by one or more trusted entities may include determiningwhether the certification of the authoring entity by the one or moretrusted entity has exceeded an expiry period. In some implementations,the expiry period of the certification is one year; however, in otherimplementations, a thirty-day expiry period of the certification may beused, for example.

Similarly, the device may receive a trust level rating associated with afirst trusted entity of the one or more trusted entities. The trustlevel rating may be based on a number of security violations caused byapplications by authoring entities trusted by the first trusted entity,for example. In this regard, the device may decide to remove the firsttrusted entity as a trusted entity of the device if the number ofsecurity violations (and or type/severity of the violations) isunacceptable to the device (e.g., an associated threshold in devicesettings) or the user of the device (e.g., upon review of a dialogscreen). It is understood that in certain implementations, the trustlevel rating is generated by a neutral third party.

In block 608, an installation of the application that requires one ormore API calls may be allowed or permitted by the device when theauthoring entity is certified by at least one trusted entity. However,if it is determined that the application that requires one or more APIcalls is not certified by any trusted entity, then installation of theapplication may be denied in accordance with some examples.

In accordance with some aspects, a transitive trust technique may beemployed for allowing installation of an application on a device. Forexample, a request by a remote server regarding an application (e.g.,application 264 c or application 266) of an authoring entity may bereceived by the device. In some examples, the request by the remoteserver may originate from a third party (e.g. a trusted entity of thedevice that has not certified the authoring entity, but may act as anintermediary). However, in other examples the request by the remoteserver may originate directly from the authoring entity, and may be sentin a secure manner (e.g., via an SSL connection) to the device. Therequest may identify the one or more API calls or required APIs of theapplication and at least one transitive trust entity that certifies theauthoring entity of the application.

The at least one transitive trust entity (e.g. service provider 254) maybe an entity that certifies and trusts the authoring entity of theapplication (e.g., application 264 c), but is not identified as atrusted entity of the device. For example, the device may not haveestablished a trusted relationship with the at least one transitivetrust entity because the user of the device may be unaware of theexistence of that particular entity (or entities) or may choose to notallow every application authorized by that particular entity (orentities) without an explicit request.

For example, if the device had identified the least one transitive trustentity as a trusted entity, the process of the receiving an explicitrequest by the remote server would not be necessary in certainimplementations (e.g., if service provider 254 were a trusted entity ofthe device, then application 264 c, which is authored by an authoringentity that is trusted by service provider 254, would be allowed asdescribed in block 606 without requiring the request for installation).Accordingly, if the explicit request identifying the one or more APIcalls or required APIs of the application and at least one transitivetrust entity that certifies the authoring entity of the application isacknowledged by the device (e.g., approved by the user), the device willallow or permit installation of the application through this transitivetrust technique.

FIG. 7 conceptually illustrates an electronic system with which someimplementations of the subject technology are implemented. Electronicsystem 700 can be a server, computer, phone, PDA, a tablet computer, atelevision with one or more processors embedded therein or coupledthereto, or generally any electronic device. Such an electronic systemincludes various types of computer readable media and interfaces forvarious other types of computer readable media. Electronic system 700includes a bus 708, processing unit(s) 712, a system memory 704, aread-only memory (ROM) 710, a permanent storage device 702, an inputdevice interface 714, an output device interface 706, and a networkinterface 716.

Bus 708 collectively represents all system, peripheral, and chipsetbuses that communicatively connect the numerous internal devices ofelectronic system 700. For instance, bus 708 communicatively connectsprocessing unit(s) 712 with ROM 710, system memory 704, and permanentstorage device 702.

From these various memory units, processing unit(s) 712 retrievesinstructions to execute and data to process in order to execute theprocesses of the subject disclosure. The processing unit(s) can be asingle processor or a multi-core processor in different implementations.

ROM 710 stores static data and instructions that are needed byprocessing unit(s) 712 and other modules of the electronic system.Permanent storage device 702, on the other hand, is a read-and-writememory device. This device is a non-volatile memory unit that storesinstructions and data even when electronic system 700 is off. Someimplementations of the subject disclosure use a mass-storage device(such as a magnetic or optical disk and its corresponding disk drive) aspermanent storage device 702.

Other implementations use a removable storage device (such as a floppydisk, flash drive, and its corresponding disk drive) as permanentstorage device 702. Like permanent storage device 702, system memory 704is a read-and-write memory device. However, unlike storage device 702,system memory 704 is a volatile read-and-write memory, such a randomaccess memory. System memory 704 stores some of the instructions anddata that the processor needs at runtime. In some implementations, theprocesses of the subject disclosure are stored in system memory 704,permanent storage device 702, or ROM 710. For example, the variousmemory units may include instructions for operations related toapplication permissions and API access notification techniques inaccordance with some implementations of the subject technology. Fromthese various memory units, processing unit(s) 712 retrievesinstructions to execute and data to process in order to execute theprocesses of some implementations.

Bus 708 also connects to input and output device interfaces 714 and 706.Input device interface 714 enables the user to communicate informationand select commands to the electronic system. Input devices used withinput device interface 714 include, for example, alphanumeric keyboardsand pointing devices (also called “cursor control devices”). Outputdevice interfaces 706 enables, for example, the display of imagesgenerated by the electronic system 700. Output devices used with outputdevice interface 706 include, for example, printers and display devices,such as cathode ray tubes (CRT) or liquid crystal displays (LCD). Someimplementations include devices such as a touchscreen that functions asboth input and output devices.

As shown in FIG. 7, bus 708 also couples electronic system 700 to anetwork (not shown) through a network interface 716. In this manner, thecomputer can be a part of a network of computers (such as a local areanetwork (“LAN”), a wide area network (“WAN”), or an Intranet, or anetwork of networks, such as the Internet. Any or all components ofelectronic system 700 can be used in conjunction with the subjectdisclosure.

These functions described above can be implemented in digital electroniccircuitry, in computer software, firmware or hardware. The techniquescan be implemented using one or more computer program products.Programmable processors and computers can be included in or packaged asmobile devices. The processes and logic flows can be performed by one ormore programmable processors and by one or more programmable logiccircuitry. General and special purpose computing devices and storagedevices can be interconnected through communication networks.

Some implementations include electronic components, such asmicroprocessors, storage and memory that store computer programinstructions in a machine-readable or computer-readable medium(alternatively referred to as computer-readable storage media,machine-readable media, or machine-readable storage media). Someexamples of such computer-readable media include RAM, ROM, read-onlycompact discs (CD-ROM), recordable compact discs (CD-R), rewritablecompact discs (CD-RW), read-only digital versatile discs (e.g., DVD-ROM,dual-layer DVD-ROM), a variety of recordable/rewritable DVDs (e.g.,DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g., SD cards, mini-SDcards, micro-SD cards, etc.), magnetic or solid state hard drives, ultradensity optical discs, any other optical or magnetic media, and floppydisks. The computer-readable media can store a computer program that isexecutable by at least one processing unit and includes sets ofinstructions for performing various operations. Examples of computerprograms or computer code include machine code, such as is produced by acompiler, and files including higher-level code that are executed by acomputer, an electronic component, or a microprocessor using aninterpreter.

For example, the instructions for performing various operations may bestored in the memory units and implemented in one or more computerprogram products, for example, one or more modules of computer programinstructions encoded on a computer readable medium for execution by, orto control the operation of, the electronic system 700, and according toany method known to those of skill in the art, including, but notlimited to, computer languages such as data-oriented languages (e.g.,SQL, dBase), system languages (e.g., C, Objective-C, C++, Assembly),architectural languages (e.g., Java, .NET), and application languages(e.g., PHP, Ruby, Perl, Python).

Instructions for performing various operations may also be implementedin computer languages such as array languages, aspect-orientedlanguages, assembly languages, authoring languages, command lineinterface languages, compiled languages, concurrent languages,curly-bracket languages, dataflow languages, data-structured languages,declarative languages, esoteric languages, extension languages,fourth-generation languages, functional languages, interactive modelanguages, interpreted languages, iterative languages, list-basedlanguages, little languages, logic-based languages, machine languages,macro languages, metaprogramming languages, multiparadigm languages,numerical analysis, non-English-based languages, object-orientedclass-based languages, object-oriented prototype-based languages,off-side rule languages, procedural languages, reflective languages,rule-based languages, scripting languages, stack-based languages,synchronous languages, syntax handling languages, visual languages,wirth languages, embeddable languages, and xml-based languages. Variousmemory units may also be used for storing temporary variable or otherintermediate information during execution of instructions to be executedby processing unit(s) 712.

While the above discussion primarily refers to microprocessor ormulti-core processors that execute software, some implementations areperformed by one or more integrated circuits, such as applicationspecific integrated circuits (ASICs) or field programmable gate arrays(FPGAs). In some implementations, such integrated circuits executeinstructions that are stored on the circuit itself.

As used in this specification and any claims of this application, theterms “computer”, “server”, “processor”, and “memory” all refer toelectronic or other technological devices. These terms exclude people orgroups of people. For the purposes of the specification, the terms“display” or “displaying” means displaying on an electronic device. Asused in this specification and any claims of this application, the terms“computer readable medium” and “computer readable media” are entirelyrestricted to tangible, physical objects that store information in aform that is readable by a computer. These terms exclude any wirelesssignals, wired download signals, and any other ephemeral signals.

To provide for interaction with a user, implementations of the subjectmatter described in this specification can be implemented on a computerhaving a display device, such as a CRT (cathode ray tube) or LCD (liquidcrystal display) monitor, for displaying information to the user and akeyboard and a pointing device, such as a mouse or a trackball, by whichthe user can provide input to the computer. Other kinds of devices canbe used to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, suchas visual feedback, auditory feedback, or tactile feedback; and inputfrom the user can be received in any form, including acoustic, speech,or tactile input. In addition, a computer can interact with a user bysending documents to and receiving documents from a device that is usedby the user; for example, by sending web pages to a web browser on auser's client device in response to requests received from the webbrowser.

Embodiments of the subject matter described in this specification can beimplemented in a computing system that includes a back end component,such as a data server, or that includes a middleware component, such asan application server, or that includes a front end component, such as aclient computer having a graphical user interface or a Web browserthrough which a user can interact with an implementation of the subjectmatter described in this specification, or any combination of one ormore such back end, middleware, or front end components. The componentsof the system can be interconnected by any form or medium of digitaldata communication, such as a communication network. Examples ofcommunication networks include a local area network (“LAN”) and a widearea network (“WAN”), an inter-network (e.g., the Internet), andpeer-to-peer networks (e.g., ad hoc peer-to-peer networks).

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other. In someembodiments, a server transmits data (e.g., an HTML page) to a clientdevice (e.g., for purposes of displaying data to and receiving userinput from a user interacting with the client device). Data generated atthe client device (e.g., a result of the user interaction) can bereceived from the client device at the server.

It is understood that any specific order or hierarchy of blocks in theprocesses disclosed is an illustration of example approaches. Based upondesign preferences, it is understood that the specific order orhierarchy of blocks in the processes may be rearranged, or that allillustrated blocks be performed. Some of the blocks may be performedsimultaneously. For example, in certain circumstances, multitasking andparallel processing may be advantageous. Moreover, the separation ofvarious system components in the embodiments described above should notbe understood as requiring such separation in all embodiments, and itshould be understood that the described program components and systemscan generally be integrated together in a single software product orpackaged into multiple software products.

The previous description is provided to enable any person skilled in theart to practice the various aspects described herein. Variousmodifications to these aspects will be readily apparent to those skilledin the art, and the generic principles defined herein may be applied toother aspects. Thus, the claims are not intended to be limited to theaspects shown herein, but are to be accorded the full scope consistentwith the language claims, wherein reference to an element in thesingular is not intended to mean “one and only one” unless specificallyso stated, but rather “one or more.” Unless specifically statedotherwise, the term “some” refers to one or more. Pronouns in themasculine (e.g., his) include the feminine and neuter gender (e.g., herand its) and vice versa. Headings and subheadings, if any, are used forconvenience only and do not limit the subject disclosure.

The term website, as used herein, may include any aspect of a website,including one or more web pages, one or more servers used to host orstore web related content, and the like. Accordingly, the term websitemay be used interchangeably with the terms web page and server.

The predicate words “configured to”, “operable to”, and “programmed to”do not imply any particular tangible or intangible modification of asubject, but, rather, are intended to be used interchangeably. Forexample, a processor configured to monitor and control an operation or acomponent may also mean the processor being programmed to monitor andcontrol the operation or the processor being operable to monitor andcontrol the operation. Likewise, a processor configured to execute codecan be construed as a processor programmed to execute code or operableto execute code.

As used herein, the phrase “at least one of” preceding a series ofitems, with the term “or” to separate any of the items, modifies thelist as a whole, rather than each item of the list. The phrase “at leastone of” does not require selection of at least one item; rather, thephrase allows a meaning that includes at least one of any one of theitems, and/or at least one of any combination of the items, and/or atleast one of each of the items. By way of example, the phrase “at leastone of A, B, or C” may refer to: only A, only B, or only C; or anycombination of A, B, and C.

A phrase such as an “aspect” does not imply that such aspect isessential to the subject technology or that such aspect applies to allconfigurations of the subject technology. A disclosure relating to anaspect may apply to all configurations, or one or more configurations. Aphrase such as an aspect may refer to one or more aspects and viceversa. A phrase such as a “configuration” does not imply that suchconfiguration is essential to the subject technology or that suchconfiguration applies to all configurations of the subject technology. Adisclosure relating to a configuration may apply to all configurations,or one or more configurations. A phrase such as a configuration mayrefer to one or more configurations and vice versa.

The word “example” is used herein to mean “serving as an example orillustration.” Any aspect or design described herein as “example” is notnecessarily to be construed as preferred or advantageous over otheraspects or designs.

What is claimed is:
 1. A computer-implemented method comprising:receiving a first application programming interface (API) call by aninstalled application; determining a sensitivity level of the receivedfirst API call; when the determined sensitivity level of the receivedfirst API call is associated with a restricted API classification,determining whether an author of the installed application is anauthorized author; and when the author of the installed application isdetermined to be an authorized author, allowing the received first APIcall access to its associated API.
 2. The method of claim 1, furthercomprising: when the author of the application is not determined to bean authorized author, denying the received first API call access to itsassociated API.
 3. The method of claim 1, wherein the determiningwhether the author of the installed application is an authorized authorcomprises determining whether a certificate associated with a deliveryof code during the installing the application is owned by a trustedentity or has been validated by a trusted entity.
 4. The method of claim3, wherein the certificate associated with the delivery of code duringthe installing the application is a secure sockets layer (SSL)certificate.
 5. The method of claim 1, further comprising: receiving asecond API call by the installed application; when the author of theinstalled application is determined to be an authorized author, allowingthe received second API call access to its associated API.
 6. A systemcomprising: one or more processors; and a memory including instructionsthat, when executed by the one or more processors, cause the one or moreprocessors to: receive a first application programming interface (API)call by an installed application, determine a sensitivity level of thereceived first API call, when the determined sensitivity level of thereceived first API call is associated with a restricted APIclassification, determine whether an author of the installed applicationis an authorized author, and when the author of the installedapplication is determined to be an authorized author, allowing thereceived first API call access to its associated API.
 7. The system ofclaim 6, wherein the instructions that, when executed by the one or moreprocessors, further cause the one or more processors to: when the authorof the application is not determined to be an authorized author, denyingthe received first API call access to its associated API.
 8. The systemof claim 6, wherein the instructions that, when executed by the one ormore processors, cause the one or more processors to determine whetheran author of the installed application is an authorized, further causethe one or one or more processors to determine whether a certificateassociated with a delivery of code during the installing the applicationis owned by a trusted entity or has been validated by a trusted entity.9. The method of claim 8, wherein the certificate associated with thedelivery of code during the installing the application is a securesockets layer (SSL) certificate.
 10. The system of claim 6, wherein theinstructions that, when executed by the one or more processors, furthercause the one or more processors to: receiving a second API call by theinstalled application; when the author of the installed application isdetermined to be an authorized author, allowing the received second APIcall access to its associated API.
 11. A system comprising: one or moreprocessors; and a memory including instructions that, when executed bythe one or more processors, cause the one or more processors to: detectan API call by an application, the API call for accessing dataassociated with a computing device, determine a sensitivity level of theAPI call based on the associated data, and provide an indication of theAPI call based on the determined sensitivity level.
 12. The system ofclaim 11, wherein the instructions that, when executed by the one ormore processors, cause the one or more processors to determine thesensitivity level of the API call based on the associated data, furthercause the one or one or more processors to determine whether thesensitivity level of the API call is at least one of high, medium, orlow.
 13. The system of claim 11, wherein the instructions that, whenexecuted by the one or more processors, cause the one or more processorsto provide the indication of the API call based on the determinedsensitivity level, further cause the one or one or more processors toactivate a hardwired indicator on the computing device.
 14. The systemof claim 11, wherein the instructions that, when executed by the one ormore processors, cause the one or more processors to provide theindication of the API call based on the determined sensitivity level,further cause the one or one or more processors to activate an indicatoricon on a display screen of the computing device.
 15. The system ofclaim 14, wherein the instructions that, when executed by the one ormore processors, further cause the one or more processors to: detectingwhether the indicator icon has been launched; and in response tolaunching the indicator icon, providing an API access log comprising oneor more API access entries associated with one or more corresponding APIcalls.
 16. The system of claim 11, wherein the instructions that, whenexecuted by the one or more processors, cause the one or more processorsto provide the indication of the API call based on the determinedsensitivity level, further cause the one or one or more processors toprovide an entry into an API access log.
 17. A machine-readable mediumcomprising instructions stored therein, which when executed by amachine, cause the machine to perform operations, the machine-readablemedium comprising: instructions for detecting an API call by anapplication, the API call for accessing data associated with a computingdevice; instructions for determining a sensitivity level of the API callbased on the associated data; and instructions for providing anindication of the API call based on the determined sensitivity level.18. The machine-readable medium of claim 17, wherein the instructionsfor determining the sensitivity level of the API call based on theassociated data comprise instructions for determining whether thesensitivity level of the API call is at least one of high, medium, orlow.
 19. The machine-readable medium of claim 17, wherein theinstructions for providing the indication of the API call based on thedetermined sensitivity level comprise instructions for activating ahardwired indicator on the computing device.
 20. The machine-readablemedium of claim 17, wherein the instructions for providing theindication of the API call based on the determined sensitivity levelcomprise instructions for activating an indicator icon on a displayscreen of the computing device.
 21. The machine-readable medium of claim20, further comprising: instructions for detecting whether the indicatoricon has been launched; and in response to launching the indicator icon,instructions for providing an API access log comprising one or more APIaccess entries associated with one or more corresponding API calls. 22.The machine-readable medium of claim 17, wherein the instructions forproviding the indication of the API call based on the determinedsensitivity level comprise instructions for providing an entry into anAPI access log.